/* autor Konjkov.VV@gmail.com */

#include <stdio.h>
#include <string.h>

#include "updated.h"
#include "common.h"

int updated_set(char *node, int number) {
SQLHSTMT  stmt;
SQLRETURN retcode;
// Установить номер последнего успешно обработанного пакета
// для определенного удаленного узла

    SQLAllocStmt( dbc, &stmt );
    EXEC_SQL( SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &number, 0, SQL_TYPE_NULL) );
    EXEC_SQL( SQLBindParameter( stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 30, 0, node, 0, SQL_TYPE_NULL) );
    EXEC_SQL( SQLExecDirect( stmt, "UPDATE "SQL_SCHEMA".syncNODES SET updated = ? WHERE name = ?;", SQL_NTS ) );
    SQLFreeStmt( stmt, SQL_CLOSE );

    return 0;
}

int updated_get(char *node, int *number) {
SQLHSTMT  stmt;
SQLRETURN retcode;
// Вернуть номер последнего успешно обработанного пакета
// для определенного удаленного узла

    SQLAllocStmt( dbc, &stmt );
    EXEC_SQL( SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 30, 0, node, 0, SQL_TYPE_NULL) );
    EXEC_SQL( SQLExecDirect( stmt, "SELECT updated FROM "SQL_SCHEMA".syncNODES WHERE name = ?;", SQL_NTS ) );
    EXEC_SQL( SQLBindCol( stmt, 1, SQL_C_LONG, number, 20, SQL_TYPE_NULL ) );

    while (1) {
        retcode = SQLFetch( stmt );
        if ( retcode == SQL_ERROR ) {
            return syncctl_error( stmt );
        } else if ( retcode == SQL_NO_DATA ) {
            break;
        } else {
            printf("%i\n", *number);
        }
    }
    SQLFreeStmt( stmt, SQL_CLOSE );

    return 0;
}
